iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0
佛心分享-IT 人自學之術

OpwnCV影像處理新手村系列 第 4

🚀 DAY 4:色彩空間轉換|BGR、RGB、HSV 和灰階圖一次搞懂!

  • 分享至 

  • xImage
  •  

前幾天我們學會了如何讀取、顯示、操作圖片,
今天要來認識非常重要的一個觀念:「色彩空間的轉換」!

在影像處理中,我們經常需要轉換不同的色彩空間,
這會影響我們怎麼處理圖片、怎麼擷取顏色範圍,或做後續的影像分析。


🎨 OpenCV 預設是 BGR,不是 RGB!

OpenCV 讀進來的彩色圖片,預設是 BGR 格式,也就是「藍綠紅」的順序:

import cv2

img = cv2.imread('image.jpg')
print(img[0, 0])  # 範例:印出第一個像素的 BGR 值

範例輸出可能是:

[128 192 255]  # 表示 B=128, G=192, R=255

這和我們一般習慣的 RGB 順序(紅綠藍)是反過來的!


🔁 轉換為 RGB 格式

若你要使用 matplotlib 顯示圖片,或與其他函式庫整合,就需要轉為 RGB:

rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

這樣就可以正確顯示顏色了,不然圖會「色偏」!


⚫ 轉換為灰階圖(Black & White)

有時候我們只需要處理亮度資訊,這時可以把圖轉為灰階:

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('Gray Image', gray)
cv2.waitKey()
cv2.destroyAllWindows()

轉成灰階後,圖片就只剩下單通道(每個像素只有一個亮度值),
適合用於邊緣偵測、二值化處理、形狀分析等。


🌈 HSV 色彩空間是什麼?

HSV 是一種更貼近人類感知的色彩空間:

項目 說明
H Hue(色相,0~179)
S Saturation(飽和度)
V Value(明度)

使用 HSV 的好處是:
可以比較容易選擇顏色範圍,例如:抓紅色、藍色、膚色等等。

轉換方式如下:

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

你可以印出某個像素的 HSV 值看看:

print(hsv[100, 200])

🧪 延伸:常見色彩空間轉換對照表

OpenCV 常用轉換 描述
cv2.COLOR_BGR2RGB BGR → RGB
cv2.COLOR_BGR2GRAY BGR → 灰階圖
cv2.COLOR_BGR2HSV BGR → HSV 色彩空間
cv2.COLOR_GRAY2BGR 灰階 → 彩色(3 通道)
cv2.COLOR_HSV2BGR HSV → BGR

📌 今日結語

今天我們學會了重要的「色彩空間轉換」技巧,包含:

  • OpenCV 預設是 BGR 色彩空間
  • 使用 cv2.cvtColor() 可轉換為:
    • RGB(顯示用)
    • 灰階(亮度處理)
    • HSV(顏色選取)

這些技巧在後續的圖像處理、邊緣偵測、色彩追蹤等任務中都會用到,
熟練它們能讓你在影像世界中更加靈活運用!


上一篇
🚀 DAY 3:影像的屬性|尺寸、通道、資料型別一次看懂!
系列文
OpwnCV影像處理新手村4
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言